package com.zzy.system.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.zzy.common.core.domain.BaseEntity;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单实体类，用于表示订单的各种属性信息。
 */
@Data
public class PurchaseInStockOrderDetail extends BaseEntity {
    //主键 自增
    private Integer purchaseInStockOrderDetailId;
    /**
     * 供应商采购入库单id，用于唯一标识每一个供应商采购入库单，是业务操作中关联相关数据的重要依据。
     */
    @JSONField(name="in_stock_sheet_id")
    private String inStockSheetId;

    /**
     * 关联的采购单id，通过该id可以与对应的采购单信息进行关联，便于业务逻辑中查询和处理相关数据。
     */
    @JSONField(name="purchase_sheet_id")
    private String purchaseSheetId;

    /**
     * 供应商id，用于明确提供商品的供应商，在多供应商场景下可用于区分不同供应商的业务数据。
     */
    @JSONField(name="supplier_id")
    private String supplierId;

    /**
     * 供应商名，直观展示供应商的名称信息，方便在业务操作中识别和展示供应商相关内容。
     */
    @JSONField(name="supplier_name")
    private String supplierName;

    /**
     * 单据状态，用于表示该供应商采购入库单当前所处的业务审核状态，
     * 取值范围限定为0、1、2、3、4，分别对应不同的业务含义（0:审核不通过/1:待提交/2:待审核/3:审核通过/4:已结款）。
     */
    @JSONField(name="status")
    private int status;

    /**
     * 商品金额，记录采购商品对应的总金额，使用Float类型来表示金额数值（实际应用中可能根据精度要求考虑使用BigDecimal类型）。
     */
    @JSONField(name="sku_amount")
    private BigDecimal skuAmount;

    /**
     * 折让金额，用于体现商品在采购过程中给予的价格折让数值，同样使用Float类型表示。
     */
    @JSONField(name="discount_amount")
    private BigDecimal discountAmount;

    /**
     * 入库金额，代表商品经过折让等因素后，实际入库时的金额数值，也是以Float类型存储。
     */
    @JSONField(name="total_amount")
    private BigDecimal totalAmount;

    /**
     * 站点id，用于标识商品入库所对应的站点信息，可用于区分不同站点的入库业务情况。
     */
    @JSONField(name="station_id")
    private String stationId;

    /**
     * 创建日期，记录该供应商采购入库单创建时的具体日期时间信息，用于跟踪业务操作的时间顺序等。
     */
    @JSONField(name="create_date")
    private String createDate;

    /**
     * 入库日期，明确商品实际完成入库操作的日期时间，有助于统计入库相关的业务数据以及时间范围分析。
     */
    @JSONField(name="in_stock_date")
    private String inStockDate;

    /**
     * 创建人，记录创建该供应商采购入库单的操作人员信息，便于追溯业务操作的责任人。
     */
    @JSONField(name="creator")
    private String creator;




    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "modify_time")
    private Date guanmaiModifyTime;
    @JsonProperty("details")
    @TableField(exist = false)
    private List<PurchaseInStockOrderDetailItem> details;

    private Integer isPush;
    private Date pushDate;
}